# -*- coding:utf-8 -*-
# @FileName  :t3_java.py
# @Time      :2021/10/6 14:52
# 运行jar包
# 引入jpype模块
import time
import requests
from jpype import *
import os

from jpype._core import startJVM, shutdownJVM
from jpype._jvmfinder import getDefaultJVMPath

if __name__ == '__main__':
    """
    基本的开发流程如下：
    ①、使用jpype开启jvm
    ②、加载java类
    ③、调用java方法
    ④、关闭jvm（不是真正意义上的关闭，卸载之前加载的类）
    """
    # 加密参数
    f = 'f1190aca-d08e-4041-8666-29931cd89dde'
    t = str(int(time.time()))
    # print(t)
    uuid = 'IMEI010000000242147-IMSINNNNNNNN'
    m = uuid+'&&'+t+'&&'+f
    # ①、使用jpype开启虚拟机（在开启jvm之前要加载类路径）
    # 加载刚才打包的jar文件
    jarpath = os.path.join(os.path.abspath("."), "C:\\Users\\Administrator\\PycharmProjects\\test_1\\yrx\\Android_nx\\t3_test\\C2387a.jar")
    # 获取jvm.dll 的文件路径
    jvmPath = getDefaultJVMPath()

    # 开启jvm:.如果是调用多个jar文件的话，要在jvm启动时指定jar文件路径，jarpath,jarpath2,jarpath3,jarpath4是jar文件路径。    # jpype.startJVM(jvmPath,"-ea", "-Djava.class.path=%s;%s;%s;%s" % (jarpath,jarpath2,jarpath3,jarpath4))
    startJVM(jvmPath, "-ea", "-Djava.class.path=%s" % (jarpath))
    # ②、加载java类（参数是java的长类名）
    # print("-Djava.class.path=%s" % (jarpath))
    javaClass = JClass("C2387a")
    # 实例化java对象 传入加密参数
    javaInstance = javaClass()
    sign = javaInstance.m11218a(m)
    print(sign)
    # ③、调用java方法，由于我写的是静态方法，直接使用类名就可以调用方法
    # javaClass.show()


    headers={
        'sys': 'Android',
        'sysVersion': '6.0.1',
        'appVersion': '8.2',
        'appVersionCode': '54',
        'udid': 'IMEI010000000242147-IMSINNNNNNNN',
        'clientType': 'android',
        'timestamp': t,
        'signature': str(sign),
        'Host': 'app.suzhou-news.cn',
        'Connection': 'Keep-Alive',
        'Accept-Encoding': 'gzip',
        'User-Agent': 'okhttp/3.9.0'
    }
    r=requests.get('https://app.suzhou-news.cn/api/v1/appNews/getBannerGuideNewsList?bannerID=11',headers=headers,verify=False)
    print(r.text)
    # ④、关闭jvm:jvm随着python程序的退出而结束
    shutdownJVM()